const express = require('express')
// 导入签到数据模块
const signinModel = require('../../model/signinModel')
const router = express.Router()
const { v4: uuidv4 } = require('uuid')
// 引入jwt token工具
const JwtUtil = require('../../utils/jwt')
const getCreateTime = require('../../utils/getCreateTime')
// 打卡
// 参数：token, signin_status,signin_year,signin_month,signin_date
router.get('/add', async (req, res) => {
    let signin_id = uuidv4()
    let token = req.query.token
    let user_name = req.query.user_name
    let signin_year = req.query.signin_year
    let signin_month = req.query.signin_month
    let signin_date = req.query.signin_date
    let signin_status = req.query.signin_status
    let signin_create_time = req.body.user_create_time || getCreateTime.now()//  签到的时间 （'2022-09-29 00:00:00'）
    // 请求需要进行token校验 
    let jwt = new JwtUtil(token)
    // 返回一个对象 
    let result = jwt.verifyToken()
    // 验通过执行下一步，否则就返回登陆信息不正确
    if (result == 'err') {
        res.send({
            code: -1,
            msg: '登录已过期,请重新登录。'
        });
    } else {
        if (result.data) {
            //用户身份
            let user_id = result.data;
            // 调用签到方法
            await signinModel.add(signin_id, user_id, signin_create_time, signin_status,signin_year,signin_month,signin_date,user_name)
                .then(
                    data => {
                        res.send(data)
                    }
                )
                .catch(
                    err => {
                        res.send({ code: 500, msg: '服务器异常...', err })
                    }
                )
        }
    }
})
// 查询是否打卡
// 参数：token, signin_year,signin_month,signin_date
router.get('/list', async (req, res) => {
    let token = req.query.token
    let signin_year = req.query.signin_year
    let signin_month = req.query.signin_month
    let signin_date = req.query.signin_date
    // 请求需要进行token校验 
    let jwt = new JwtUtil(token)
    // 返回一个对象 
    let result = jwt.verifyToken()
    // 验通过执行下一步，否则就返回登陆信息不正确
    if (result == 'err') {
        res.send({
            code: -1,
            msg: '登录已过期,请重新登录。'
        });
    } else {
        if (result.data) {
            //用户身份
            let user_id = result.data
            // 调用签到方法
            await signinModel.list(user_id,signin_year,signin_month,signin_date)
                .then(
                    data => {
                        res.send(data)
                    }
                )
                .catch(
                    err => {
                        res.send({ code: 500, msg: '服务器异常...', err })
                    }
                )
        }
    }
})
// 统计打卡次数
// 参数：token
router.get('/total', async (req, res) => {
    let token = req.query.token 
    // 请求需要进行token校验 
    let jwt = new JwtUtil(token)
    // 返回一个对象 
    let result = jwt.verifyToken()
    // 验通过执行下一步，否则就返回登陆信息不正确
    if (result == 'err') {
        res.send({
            code: -1,
            msg: '登录已过期,请重新登录。'
        });
    } else {
        if (result.data) {
            //用户身份
            let user_id = result.data
            // 调用签到方法
            await signinModel.total(user_id)
                .then(
                    data => {
                        res.send(data)
                    }
                )
                .catch(
                    err => {
                        res.send({ code: 500, msg: '服务器异常...', err })
                    }
                )
        }
    }
})
// 统计今天签到人数
router.get('/all', async (req, res) => {
    let signin_year =  req.query.signin_year 
    let signin_month = req.query.signin_month
    let signin_date =  req.query.signin_date 
    // console.log(signinModel);
    // 调用获取分页签到列表
    await signinModel.test(signin_year, signin_month, signin_date)
    .then(
        data => {
            res.send(data)
        }
    )
    .catch(
        err => {
            res.send({ code: 500, msg: '服务器异常...2', err })
        }
    )
})
// 获取分页签到列表
router.get('/items', async (req, res) => {
    const page_num = req.query.page_num //当前的页码
    const page_size = req.query.page_size //当前页的数量
    // 调用获取分页内容列表
    await signinModel.items(page_num, page_size)
        .then(
            data => {
                res.send(data)
            }
        )
        .catch(
            err => {
                res.send({ code: 500, msg: '服务器异常...', err })
            }
        )
})
// 删除签到
router.get('/remove', async (req, res) => {
    let token = req.query.token
    let signin_id = req.query.signin_id
    // 请求需要进行token校验 
    let jwt = new JwtUtil(token)
    // 返回一个对象 
    let result = jwt.verifyToken()
    // 验通过执行下一步，否则就返回登陆信息不正确
    if (result == 'err') {
        res.send({
            code: -1,
            msg: '登录已过期,请重新登录。'
        });
    } else {
        // 用户是否在线
        if (result.data) {
            // 调用删除签到方法
            await signinModel.remove(signin_id)
                .then(
                    data => {
                        res.send(data)
                    }
                )
                .catch(
                    err => {
                        res.send({ code: 500, msg: '服务器异常...', err })
                    }
                )
        }
    }
})
// 查询是否打卡
// 参数：token, signin_year,signin_month,signin_date
router.get('/isSignin', async (req, res) => {
    let token = req.query.token
    let signin_year = req.query.signin_year
    let signin_month = req.query.signin_month
    let signin_date = req.query.signin_date
    // 请求需要进行token校验 
    let jwt = new JwtUtil(token)
    // 返回一个对象 
    let result = jwt.verifyToken()
    // 验通过执行下一步，否则就返回登陆信息不正确
    if (result == 'err') {
        res.send({
            code: -1,
            msg: '登录已过期,请重新登录。'
        });
    } else {
        if (result.data) {
            //用户身份
            let user_id = result.data
            // 调用签到方法
            await signinModel.isSignin(user_id,signin_year,signin_month,signin_date)
                .then(
                    data => {
                        res.send(data)
                    }
                )
                .catch(
                    err => {
                        res.send({ code: 500, msg: '服务器异常...', err })
                    }
                )
        }
    }
})
// 路由挂在模块系统下
module.exports = router;
